package objetos;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.ArrayList;




public class GerenciaPlataformaMovimentoHorizontal extends Sprite{

	public double x;
	public double y;
	
	public double oldX;
	
	int objx, objy; //obj que colidiu grava o x e y da plataforma que colidiu com o obj 2 funcao verificaColicaoRetangular
	
	public boolean direita = true, esquerda = false, iniciar = true, start = false;;
	  
	public long duracaoMovimento;
	
	ArrayList<PlataformaMovimentoHorizontal> listaPlataformaHorizontal = new ArrayList<PlataformaMovimentoHorizontal>();
	
	ArrayList<Boolean> verificaColicoes = new ArrayList<Boolean>();
	
	boolean colidiu = false;
	
	
	BufferedImage imagem;
	
	public boolean debug = false;
	
	public GerenciaPlataformaMovimentoHorizontal() {
		
	}
		
	 public void addPlataformaHorizontal(double x, double y, int evento, int modoEvento, int tempo){
		   
		   PlataformaMovimentoHorizontal novaPlataforma = new PlataformaMovimentoHorizontal(x, y, evento, modoEvento, tempo);
		   
		   listaPlataformaHorizontal.add(novaPlataforma);
		   
		   novaPlataforma = null;
	   }
	
	

	@Override
	public void SimulaSe(long diftime) {
		
		for(PlataformaMovimentoHorizontal plataformaHorizontal: listaPlataformaHorizontal){
			if(plataformaHorizontal.modoEvento >= 1 || plataformaHorizontal.evento <= 0){
				plataformaHorizontal.SimulaSe(diftime);
				plataformaHorizontal.colisaoRetangular(CanvasGame.instance.heroi, diftime);
				
			}
		}
			
	}

	@Override
	public void DesenhaSe(Graphics2D dbg, int mapx, int mapy) {

		for(PlataformaMovimentoHorizontal plataformaHorizontal: listaPlataformaHorizontal){
			if(plataformaHorizontal.modoEvento >= 1 || plataformaHorizontal.evento <= 0){
				plataformaHorizontal.DesenhaSe(dbg, mapx, mapy);
			}
		}
      
	}
	
	public boolean colisaoRetangular(Heroi p) {
		
		int cont = 0;
		
		for (int i = 0; i < listaPlataformaHorizontal.size(); i++) {	
		
		if(listaPlataformaHorizontal.get(i).modoEvento >= 1 || listaPlataformaHorizontal.get(i).evento <= 0){	
			
		colidiu = true;	
			
		if (p.X + 32 < listaPlataformaHorizontal.get(i).x) {
			colidiu = false;
		}
		if (p.X > listaPlataformaHorizontal.get(i).x + 108) {
			colidiu = false;
		}
		if (p.Y + 48 < listaPlataformaHorizontal.get(i).y) {
			colidiu = false;
		}
		if (p.Y > listaPlataformaHorizontal.get(i).y -5) {
			colidiu = false;
		}
		
		
		if(colidiu == true){
			y = listaPlataformaHorizontal.get(i).y;
			return true;
		}
		
		cont++;
		
	}else{
		colidiu = false;
	}
		
		}
		
		if(colidiu == false){
			return false;
		}else{
			return true;
		
		}

	}
	
	
	
	
	public boolean colisaoRetangular(double x, double y) {
		
		int cont =0;
		boolean colidiu2 = true;
		
		for (int i = 0; i < listaPlataformaHorizontal.size(); i++) {	
		
		if(listaPlataformaHorizontal.get(i).modoEvento >= 1 || listaPlataformaHorizontal.get(i).evento <= 0){	
				
			colidiu2 = true;	
			
		if (x + 32 < listaPlataformaHorizontal.get(i).x) {
			colidiu2 = false;
		}
		if (x > listaPlataformaHorizontal.get(i).x + 108) {
			colidiu2 = false;
		}
		if (y + 48 < listaPlataformaHorizontal.get(i).y) {
			colidiu2 = false;
		}
		if (y > listaPlataformaHorizontal.get(i).y - 5) {
			colidiu2 = false;
		}
		
		
		if(colidiu2 == true){
			
			objy = (int) listaPlataformaHorizontal.get(i).y;
			return true;
		}
		
		cont++;
		
		}else{
			colidiu2 = false;
		}
		
		}
		
		if(colidiu2 == false){
			return false;
		}else{
			return true;
			
		}

	}
	
	
	
	

}
